package cc.ucanuup.service.base.inter;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;

import cc.ucanuup.common.support.easyui.inter.EasyuiQuery;
import cc.ucanuup.common.support.easyui.model.SearchComgrid;
import cc.ucanuup.common.support.easyui.view.EasyuiPage;
import cc.ucanuup.service.base.dto.MasterCodeDto;
import cc.ucanuup.service.base.entity.MasterCode;
import cc.ucanuup.service.base.enums.MasterCodeType;

/**
 * 文件名： com.bozhon.service.base.inter.MasterCodeService.java
 * 作者：   WenBin
 * 日期：   2017年10月26日
 * 功能说明： 数据字典接口类
 * =========================================================
 * 修改记录：
 * 修改作者    日期      修改内容
 * =========================================================
 *  Copyright (c) 2010-2011 .All rights reserved.
 */
@Service
public interface MasterCodeService {

	/**
	 * @Method: com.bozhon.service.base.inter.MasterCodeService.save
	 * @Description: 保存或者更新改对象信息
	 * @author: WenBin
	 * @date: 2017年10月27日
	 * @version: 1.0
	 * @param entity
	 * @return
	 * MasterCode
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	MasterCode save(MasterCode entity);
	/**
	 *
	 * @Method: com.bozhon.service.base.inter.MasterCodeService.findOne
	 * @Description:通过主键查询 数据字典对象信息
	 * @author: WenBin
	 * @date: 2017年10月27日
	 * @version: 1.0
	 * @param id
	 * @return
	 * MasterCode
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	MasterCode findOne(String id);
	/**
	 *
	 * @Method: com.bozhon.service.base.inter.MasterCodeService.findOneByCode
	 * @Description: 通过编码查询数据字典对象信息
	 * @author: WenBin
	 * @date: 2017年10月27日
	 * @version: 1.0
	 * @param code
	 * @return
	 * MasterCode
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	MasterCode findOneByCode(Integer code);
	/**
	 * @Method: com.bozhon.service.base.inter.MasterCodeService.findOneByFCode
	 * @Description: 通过编码查询数据字典所有子对象信息
	 * @author: WenBin
	 * @date: 2017年11月6日
	 * @version: 1.0
	 * @param code
	 * @return
	 * List<MasterCode>
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	List<MasterCode> findMasterCodeByFCode(Integer code);

	/**
	 * @Method: com.bozhon.service.base.inter.MasterCodeService.findActiveMasterCodeByFCode
	 * @Description: 通过编码查询数据字典 启用的 子对象信息
	 * @author: WenBin
	 * @date: 2017年11月6日
	 * @version: 1.0
	 * @param code
	 * @return
	 * List<MasterCode>
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	List<MasterCode> findActiveMasterCodeByFCode(Integer code);
	/**
	 *
	 * @Method: com.bozhon.service.base.inter.MasterCodeService.queryTopMasterCodes
	 * @Description:分页 - 查询顶级菜单信息
	 * @author: WenBin
	 * @date: 2017年10月27日
	 * @version: 1.0
	 * @param bzpage
	 * @return
	 * @throws Exception
	 * Page<MasterCode>
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	Page<MasterCode> queryTopMasterCodes(EasyuiQuery bzpage) throws Exception;
	/**
	 * @Method: com.bozhon.service.base.inter.MasterCodeService.querySunMasterCodes
	 * @Description: 分页 - 查询子 数据字典信息
	 * @author: WenBin
	 * @date: 2017年10月27日
	 * @version: 1.0
	 * @param bzpage
	 * @return
	 * @throws Exception
	 * Page<MasterCode>
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	Page<MasterCode> querySunMasterCodes(EasyuiQuery bzpage) throws Exception;

	EasyuiPage<MasterCodeDto> querySunMasterCodeDto(EasyuiQuery bzpage,MasterCodeType type) throws Exception;

	EasyuiPage<MasterCodeDto> querySunMasterCodeDto(SearchComgrid bzpage,MasterCodeType type) throws Exception;

	Page<MasterCode> querySunMasterCode(SearchComgrid bzpage, MasterCodeType type) throws Exception;

	Page<MasterCode> querySunMasterCodes(EasyuiQuery bzPage, MasterCodeType type) throws Exception ;
	/**
	 * @Method: com.bozhon.service.base.inter.MasterCodeService.findActiveMasterCodeDto
	 * @Description: 查找所有激活的 字典对象
	 * @author: WenBin
	 * @date: 2017年11月9日
	 * @version: 1.0
	 * @param type
	 * @return
	 * List<MasterCodeDto>
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	List<MasterCodeDto>  findActiveMasterCodeDto(MasterCodeType type);
	/**
	 * @Method: com.bozhon.service.base.inter.MasterCodeService.findAllMasterCodeDto
	 * @Description: 查找出所有状态的字典对象
	 * @author: WenBin
	 * @date: 2017年11月9日
	 * @version: 1.0
	 * @param type
	 * @return
	 * List<MasterCodeDto>
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	List<MasterCodeDto>  findAllMasterCodeDto(MasterCodeType type);

	/**
	 * @Method: com.bozhon.service.base.inter.MasterCodeService.getMasterCodeDesc
	 * @Description: 获取字典描述信息
	 * @author: WenBin
	 * @date: 2017年11月9日
	 * @version: 1.0
	 * @param type  字典枚举类型(code father)
	 * @param key  字典的KEY值
	 * @return
	 * String  字典的描述信息
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	String getMasterCodeDesc(MasterCodeType type ,String key);

	Integer findMaxCode();
}
